﻿Public Class cRemision
    Public Shared Function crearEstructura() As DataTable
        Dim dtProductos = New DataTable
        dtProductos.Columns.Add(New DataColumn("COD_PRODUCTO", Type.GetType("System.String")))
        dtProductos.Columns.Add(New DataColumn("EXISTENCIA", Type.GetType("System.Double")))
        dtProductos.Columns.Add(New DataColumn("ID_UNIDAD_MEDIDA", Type.GetType("System.String")))
        dtProductos.Columns.Add(New DataColumn("BD_REFERENCIA", Type.GetType("System.String")))
        dtProductos.Columns.Add(New DataColumn("DESCRIPCION", Type.GetType("System.String")))
        dtProductos.Columns.Add(New DataColumn("CANTIDAD", Type.GetType("System.Double")))
        dtProductos.Columns.Add(New DataColumn("IVA", Type.GetType("System.Decimal")))
        dtProductos.Columns.Add(New DataColumn("COSTO_UNIT", Type.GetType("System.Double")))
        dtProductos.Columns.Add(New DataColumn("COSTO_TOTAL", Type.GetType("System.Double")))
        dtProductos.Columns.Add(New DataColumn("SERIAL", Type.GetType("System.String")))
        Return dtProductos
    End Function
    Public Shared Function ValidarExistencia(bd As String, cod As String, cantidad As Double) As Boolean
        Dim dt As DataTable
        dt = GBDZafiro.ProductoBodega.ConsExistencia(cod, bd)
        If dt.Rows.Count > 0 Then
            If CDbl(dt.Rows(0)("EXISTENCIA").ToString) < cantidad Then
                msnBox.msnError("En la Bodega escogida solo hay disponibles " + dt.Rows(0)("EXISTENCIA").ToString)
                Return False
            End If
            Return True
        Else
            Return False
            msnBox.msnError("No hay Existencia en la Bodega " + bd)
        End If
    End Function

    Public Shared Sub AddProducto(ByRef dtProductos As DataTable, oProd As GBDZafiro.Producto, Optional ByVal cantidad As Integer = 0)
        If ValidarExistencia(oProd.bdReferencia, oProd.codProducto, cantidad) Then
            Dim row As DataRow
            row = dtProductos.NewRow()
            row("COD_PRODUCTO") = oProd.codProducto
            row("EXISTENCIA") = oProd.existencia
            row("ID_UNIDAD_MEDIDA") = oProd.idUniMed
            row("BD_REFERENCIA") = oProd.bdReferencia
            row("DESCRIPCION") = oProd.descripcion
            row("SERIAL") = ""
            row("CANTIDAD") = cantidad
            row("IVA") = oProd.porcIVA
            Dim porc_iva As Double = oProd.porcIVA
            porc_iva = 1 + (porc_iva / 100)
            row("COSTO_UNIT") = oProd.costoUni
            Dim costoTot As Double = (cantidad * oProd.costoUni) * porc_iva
            row("COSTO_TOTAL") = costoTot
            dtProductos.Rows.Add(row)
        End If
    End Sub
    Public Shared Function CalculaTotal(ByVal gv As DataGridView) As Double
        Dim total As Double = 0
        Try
            For i As Integer = 0 To gv.RowCount - 1
                total = total + CDbl(gv.Item("COSTO_TOTAL", i).Value)
            Next
        Catch ex As Exception
            MsgBox(ex.Message.ToString)
        End Try
        Return total
    End Function
    Public Shared Function CalcularTotalRow(ByRef gvProducto As DataGridView, e As System.Windows.Forms.DataGridViewCellEventArgs) As Double
        Dim cantidad As Double = CDbl(gvProducto.Rows(e.RowIndex).Cells("CANTIDAD").Value)
        Dim costoUnit As Double = CDbl(gvProducto.Rows(e.RowIndex).Cells("COSTO_UNIT").Value)
        Dim porc_iva As Double = CDbl(gvProducto.Rows(e.RowIndex).Cells("IVA").Value)
        porc_iva = 1 + (porc_iva / 100)
        Dim costoTot As Double = (cantidad * costoUnit) * porc_iva
        gvProducto.Rows(e.RowIndex).Cells("COSTO_TOTAL").Value = costoTot
        Return costoTot
    End Function
End Class
